﻿using System.Diagnostics.Contracts;
using System.Linq.Expressions;
using System.Reactive.Concurrency;

namespace System.Reactive.Linq
{
	public static partial class Observable
	{
#if !WINDOWS_PHONE
		public static Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, IObservable<Unit>> ToAsync<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>(this IQbservableProvider provider, Expression<Action<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>> action)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(action != null, null, "action != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, IObservable<Unit>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, IObservable<Unit>>>() != null");
			return null;
		}

		public static Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, IObservable<Unit>> ToAsync<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>(this IQbservableProvider provider, Expression<Action<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>> action)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(action != null, null, "action != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, IObservable<Unit>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, IObservable<Unit>>>() != null");
			return null;
		}

		public static Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, IObservable<Unit>> ToAsync<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>(this IQbservableProvider provider, Expression<Action<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>> action)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(action != null, null, "action != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, IObservable<Unit>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, IObservable<Unit>>>() != null");
			return null;
		}

		public static Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, IObservable<Unit>> ToAsync<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>(this IQbservableProvider provider, Expression<Action<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>> action)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(action != null, null, "action != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, IObservable<Unit>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, IObservable<Unit>>>() != null");
			return null;
		}

		public static Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, IObservable<Unit>> ToAsync<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(this IQbservableProvider provider, Expression<Action<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>> action)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(action != null, null, "action != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, IObservable<Unit>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, IObservable<Unit>>>() != null");
			return null;
		}

		public static Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, IObservable<Unit>> ToAsync<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>(this IQbservableProvider provider, Expression<Action<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>> action)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(action != null, null, "action != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, IObservable<Unit>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, IObservable<Unit>>>() != null");
			return null;
		}

		public static Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, IObservable<Unit>> ToAsync<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(this IQbservableProvider provider, Expression<Action<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>> action)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(action != null, null, "action != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, IObservable<Unit>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, IObservable<Unit>>>() != null");
			return null;
		}

		public static Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, IObservable<Unit>> ToAsync<T1, T2, T3, T4, T5, T6, T7, T8, T9>(this IQbservableProvider provider, Expression<Action<T1, T2, T3, T4, T5, T6, T7, T8, T9>> action)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(action != null, null, "action != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, IObservable<Unit>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, IObservable<Unit>>>() != null");
			return null;
		}

		public static Func<T1, T2, T3, T4, T5, T6, T7, T8, IObservable<Unit>> ToAsync<T1, T2, T3, T4, T5, T6, T7, T8>(this IQbservableProvider provider, Expression<Action<T1, T2, T3, T4, T5, T6, T7, T8>> action)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(action != null, null, "action != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, IObservable<Unit>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, IObservable<Unit>>>() != null");
			return null;
		}

		public static Func<T1, T2, T3, T4, T5, T6, T7, IObservable<Unit>> ToAsync<T1, T2, T3, T4, T5, T6, T7>(this IQbservableProvider provider, Expression<Action<T1, T2, T3, T4, T5, T6, T7>> action)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(action != null, null, "action != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, IObservable<Unit>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, IObservable<Unit>>>() != null");
			return null;
		}

		public static Func<T1, T2, T3, T4, T5, T6, IObservable<Unit>> ToAsync<T1, T2, T3, T4, T5, T6>(this IQbservableProvider provider, Expression<Action<T1, T2, T3, T4, T5, T6>> action)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(action != null, null, "action != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, T5, T6, IObservable<Unit>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, T5, T6, IObservable<Unit>>>() != null");
			return null;
		}

		public static Func<T1, T2, T3, T4, T5, IObservable<Unit>> ToAsync<T1, T2, T3, T4, T5>(this IQbservableProvider provider, Expression<Action<T1, T2, T3, T4, T5>> action)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(action != null, null, "action != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, T5, IObservable<Unit>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, T5, IObservable<Unit>>>() != null");
			return null;
		}
#endif

		public static Func<T1, T2, T3, T4, IObservable<Unit>> ToAsync<T1, T2, T3, T4>(this IQbservableProvider provider, Expression<Action<T1, T2, T3, T4>> action)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(action != null, null, "action != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, IObservable<Unit>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, IObservable<Unit>>>() != null");
			return null;
		}

		public static Func<T1, T2, T3, IObservable<Unit>> ToAsync<T1, T2, T3>(this IQbservableProvider provider, Expression<Action<T1, T2, T3>> action)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(action != null, null, "action != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, IObservable<Unit>>>() != null, null, "Contract.Result<Func<T1, T2, T3, IObservable<Unit>>>() != null");
			return null;
		}

		public static Func<T1, T2, IObservable<Unit>> ToAsync<T1, T2>(this IQbservableProvider provider, Expression<Action<T1, T2>> action)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(action != null, null, "action != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, IObservable<Unit>>>() != null, null, "Contract.Result<Func<T1, T2, IObservable<Unit>>>() != null");
			return null;
		}

		public static Func<TSource, IObservable<Unit>> ToAsync<TSource>(this IQbservableProvider provider, Expression<Action<TSource>> action)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(action != null, null, "action != null");
			Contract.Ensures(Contract.Result<Func<TSource, IObservable<Unit>>>() != null, null, "Contract.Result<Func<TSource, IObservable<Unit>>>() != null");
			return null;
		}

		public static Func<IObservable<Unit>> ToAsync(this IQbservableProvider provider, Expression<Action> action)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(action != null, null, "action != null");
			Contract.Ensures(Contract.Result<Func<IObservable<Unit>>>() != null, null, "Contract.Result<Func<IObservable<Unit>>>() != null");
			return null;
		}

#if !WINDOWS_PHONE
		public static Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, IObservable<TResult>> ToAsync<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult>(this IQbservableProvider provider, Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult>> function)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(function != null, null, "function != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, IObservable<TResult>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, IObservable<TResult>>>() != null");
			return null;
		}

		public static Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, IObservable<TResult>> ToAsync<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult>(this IQbservableProvider provider, Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult>> function)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(function != null, null, "function != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, IObservable<TResult>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, IObservable<TResult>>>() != null");
			return null;
		}

		public static Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, IObservable<TResult>> ToAsync<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult>(this IQbservableProvider provider, Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult>> function)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(function != null, null, "function != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, IObservable<TResult>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, IObservable<TResult>>>() != null");
			return null;
		}

		public static Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, IObservable<TResult>> ToAsync<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult>(this IQbservableProvider provider, Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult>> function)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(function != null, null, "function != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, IObservable<TResult>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, IObservable<TResult>>>() != null");
			return null;
		}

		public static Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, IObservable<TResult>> ToAsync<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult>(this IQbservableProvider provider, Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult>> function)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(function != null, null, "function != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, IObservable<TResult>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, IObservable<TResult>>>() != null");
			return null;
		}

		public static Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, IObservable<TResult>> ToAsync<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult>(this IQbservableProvider provider, Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult>> function)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(function != null, null, "function != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, IObservable<TResult>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, IObservable<TResult>>>() != null");
			return null;
		}

		public static Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, IObservable<TResult>> ToAsync<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult>(this IQbservableProvider provider, Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult>> function)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(function != null, null, "function != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, IObservable<TResult>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, IObservable<TResult>>>() != null");
			return null;
		}

		public static Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, IObservable<TResult>> ToAsync<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult>(this IQbservableProvider provider, Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult>> function)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(function != null, null, "function != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, IObservable<TResult>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, IObservable<TResult>>>() != null");
			return null;
		}

		public static Func<T1, T2, T3, T4, T5, T6, T7, T8, IObservable<TResult>> ToAsync<T1, T2, T3, T4, T5, T6, T7, T8, TResult>(this IQbservableProvider provider, Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, TResult>> function)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(function != null, null, "function != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, IObservable<TResult>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, IObservable<TResult>>>() != null");
			return null;
		}

		public static Func<T1, T2, T3, T4, T5, T6, T7, IObservable<TResult>> ToAsync<T1, T2, T3, T4, T5, T6, T7, TResult>(this IQbservableProvider provider, Expression<Func<T1, T2, T3, T4, T5, T6, T7, TResult>> function)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(function != null, null, "function != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, IObservable<TResult>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, IObservable<TResult>>>() != null");
			return null;
		}

		public static Func<T1, T2, T3, T4, T5, T6, IObservable<TResult>> ToAsync<T1, T2, T3, T4, T5, T6, TResult>(this IQbservableProvider provider, Expression<Func<T1, T2, T3, T4, T5, T6, TResult>> function)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(function != null, null, "function != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, T5, T6, IObservable<TResult>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, T5, T6, IObservable<TResult>>>() != null");
			return null;
		}

		public static Func<T1, T2, T3, T4, T5, IObservable<TResult>> ToAsync<T1, T2, T3, T4, T5, TResult>(this IQbservableProvider provider, Expression<Func<T1, T2, T3, T4, T5, TResult>> function)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(function != null, null, "function != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, T5, IObservable<TResult>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, T5, IObservable<TResult>>>() != null");
			return null;
		}
#endif

		public static Func<T1, T2, T3, T4, IObservable<TResult>> ToAsync<T1, T2, T3, T4, TResult>(this IQbservableProvider provider, Expression<Func<T1, T2, T3, T4, TResult>> function)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(function != null, null, "function != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, IObservable<TResult>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, IObservable<TResult>>>() != null");
			return null;
		}

		public static Func<T1, T2, T3, IObservable<TResult>> ToAsync<T1, T2, T3, TResult>(this IQbservableProvider provider, Expression<Func<T1, T2, T3, TResult>> function)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(function != null, null, "function != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, IObservable<TResult>>>() != null, null, "Contract.Result<Func<T1, T2, T3, IObservable<TResult>>>() != null");
			return null;
		}

		public static Func<T1, T2, IObservable<TResult>> ToAsync<T1, T2, TResult>(this IQbservableProvider provider, Expression<Func<T1, T2, TResult>> function)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(function != null, null, "function != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, IObservable<TResult>>>() != null, null, "Contract.Result<Func<T1, T2, IObservable<TResult>>>() != null");
			return null;
		}

		public static Func<T, IObservable<TResult>> ToAsync<T, TResult>(this IQbservableProvider provider, Expression<Func<T, TResult>> function)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(function != null, null, "function != null");
			Contract.Ensures(Contract.Result<Func<T, IObservable<TResult>>>() != null, null, "Contract.Result<Func<T, IObservable<TResult>>>() != null");
			return null;
		}

		public static Func<IObservable<TResult>> ToAsync<TResult>(this IQbservableProvider provider, Expression<Func<TResult>> function)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(function != null, null, "function != null");
			Contract.Ensures(Contract.Result<Func<IObservable<TResult>>>() != null, null, "Contract.Result<Func<IObservable<TResult>>>() != null");
			return null;
		}

#if !WINDOWS_PHONE
		public static Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, IObservable<Unit>> ToAsync<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>(this IQbservableProvider provider, Expression<Action<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>> action, IScheduler scheduler)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(action != null, null, "action != null");
			Contract.Requires(scheduler != null, null, "scheduler != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, IObservable<Unit>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, IObservable<Unit>>>() != null");
			return null;
		}

		public static Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, IObservable<Unit>> ToAsync<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>(this IQbservableProvider provider, Expression<Action<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>> action, IScheduler scheduler)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(action != null, null, "action != null");
			Contract.Requires(scheduler != null, null, "scheduler != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, IObservable<Unit>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, IObservable<Unit>>>() != null");
			return null;
		}

		public static Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, IObservable<Unit>> ToAsync<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>(this IQbservableProvider provider, Expression<Action<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>> action, IScheduler scheduler)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(action != null, null, "action != null");
			Contract.Requires(scheduler != null, null, "scheduler != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, IObservable<Unit>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, IObservable<Unit>>>() != null");
			return null;
		}

		public static Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, IObservable<Unit>> ToAsync<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>(this IQbservableProvider provider, Expression<Action<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>> action, IScheduler scheduler)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(action != null, null, "action != null");
			Contract.Requires(scheduler != null, null, "scheduler != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, IObservable<Unit>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, IObservable<Unit>>>() != null");
			return null;
		}

		public static Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, IObservable<Unit>> ToAsync<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(this IQbservableProvider provider, Expression<Action<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>> action, IScheduler scheduler)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(action != null, null, "action != null");
			Contract.Requires(scheduler != null, null, "scheduler != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, IObservable<Unit>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, IObservable<Unit>>>() != null");
			return null;
		}

		public static Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, IObservable<Unit>> ToAsync<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>(this IQbservableProvider provider, Expression<Action<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>> action, IScheduler scheduler)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(action != null, null, "action != null");
			Contract.Requires(scheduler != null, null, "scheduler != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, IObservable<Unit>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, IObservable<Unit>>>() != null");
			return null;
		}

		public static Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, IObservable<Unit>> ToAsync<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(this IQbservableProvider provider, Expression<Action<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>> action, IScheduler scheduler)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(action != null, null, "action != null");
			Contract.Requires(scheduler != null, null, "scheduler != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, IObservable<Unit>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, IObservable<Unit>>>() != null");
			return null;
		}

		public static Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, IObservable<Unit>> ToAsync<T1, T2, T3, T4, T5, T6, T7, T8, T9>(this IQbservableProvider provider, Expression<Action<T1, T2, T3, T4, T5, T6, T7, T8, T9>> action, IScheduler scheduler)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(action != null, null, "action != null");
			Contract.Requires(scheduler != null, null, "scheduler != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, IObservable<Unit>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, IObservable<Unit>>>() != null");
			return null;
		}

		public static Func<T1, T2, T3, T4, T5, T6, T7, T8, IObservable<Unit>> ToAsync<T1, T2, T3, T4, T5, T6, T7, T8>(this IQbservableProvider provider, Expression<Action<T1, T2, T3, T4, T5, T6, T7, T8>> action, IScheduler scheduler)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(action != null, null, "action != null");
			Contract.Requires(scheduler != null, null, "scheduler != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, IObservable<Unit>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, IObservable<Unit>>>() != null");
			return null;
		}

		public static Func<T1, T2, T3, T4, T5, T6, T7, IObservable<Unit>> ToAsync<T1, T2, T3, T4, T5, T6, T7>(this IQbservableProvider provider, Expression<Action<T1, T2, T3, T4, T5, T6, T7>> action, IScheduler scheduler)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(action != null, null, "action != null");
			Contract.Requires(scheduler != null, null, "scheduler != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, IObservable<Unit>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, IObservable<Unit>>>() != null");
			return null;
		}

		public static Func<T1, T2, T3, T4, T5, T6, IObservable<Unit>> ToAsync<T1, T2, T3, T4, T5, T6>(this IQbservableProvider provider, Expression<Action<T1, T2, T3, T4, T5, T6>> action, IScheduler scheduler)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(action != null, null, "action != null");
			Contract.Requires(scheduler != null, null, "scheduler != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, T5, T6, IObservable<Unit>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, T5, T6, IObservable<Unit>>>() != null");
			return null;
		}

		public static Func<T1, T2, T3, T4, T5, IObservable<Unit>> ToAsync<T1, T2, T3, T4, T5>(this IQbservableProvider provider, Expression<Action<T1, T2, T3, T4, T5>> action, IScheduler scheduler)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(action != null, null, "action != null");
			Contract.Requires(scheduler != null, null, "scheduler != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, T5, IObservable<Unit>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, T5, IObservable<Unit>>>() != null");
			return null;
		}
#endif

		public static Func<T1, T2, T3, T4, IObservable<Unit>> ToAsync<T1, T2, T3, T4>(this IQbservableProvider provider, Expression<Action<T1, T2, T3, T4>> action, IScheduler scheduler)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(action != null, null, "action != null");
			Contract.Requires(scheduler != null, null, "scheduler != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, IObservable<Unit>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, IObservable<Unit>>>() != null");
			return null;
		}

		public static Func<T1, T2, T3, IObservable<Unit>> ToAsync<T1, T2, T3>(this IQbservableProvider provider, Expression<Action<T1, T2, T3>> action, IScheduler scheduler)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(action != null, null, "action != null");
			Contract.Requires(scheduler != null, null, "scheduler != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, IObservable<Unit>>>() != null, null, "Contract.Result<Func<T1, T2, T3, IObservable<Unit>>>() != null");
			return null;
		}

		public static Func<T1, T2, IObservable<Unit>> ToAsync<T1, T2>(this IQbservableProvider provider, Expression<Action<T1, T2>> action, IScheduler scheduler)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(action != null, null, "action != null");
			Contract.Requires(scheduler != null, null, "scheduler != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, IObservable<Unit>>>() != null, null, "Contract.Result<Func<T1, T2, IObservable<Unit>>>() != null");
			return null;
		}

		public static Func<TSource, IObservable<Unit>> ToAsync<TSource>(this IQbservableProvider provider, Expression<Action<TSource>> action, IScheduler scheduler)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(action != null, null, "action != null");
			Contract.Requires(scheduler != null, null, "scheduler != null");
			Contract.Ensures(Contract.Result<Func<TSource, IObservable<Unit>>>() != null, null, "Contract.Result<Func<TSource, IObservable<Unit>>>() != null");
			return null;
		}

		public static Func<IObservable<Unit>> ToAsync(this IQbservableProvider provider, Expression<Action> action, IScheduler scheduler)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(action != null, null, "action != null");
			Contract.Requires(scheduler != null, null, "scheduler != null");
			Contract.Ensures(Contract.Result<Func<IObservable<Unit>>>() != null, null, "Contract.Result<Func<IObservable<Unit>>>() != null");
			return null;
		}

#if !WINDOWS_PHONE
		public static Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, IObservable<TResult>> ToAsync<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult>(this IQbservableProvider provider, Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult>> function, IScheduler scheduler)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(function != null, null, "function != null");
			Contract.Requires(scheduler != null, null, "scheduler != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, IObservable<TResult>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, IObservable<TResult>>>() != null");
			return null;
		}

		public static Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, IObservable<TResult>> ToAsync<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult>(this IQbservableProvider provider, Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult>> function, IScheduler scheduler)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(function != null, null, "function != null");
			Contract.Requires(scheduler != null, null, "scheduler != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, IObservable<TResult>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, IObservable<TResult>>>() != null");
			return null;
		}

		public static Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, IObservable<TResult>> ToAsync<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult>(this IQbservableProvider provider, Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult>> function, IScheduler scheduler)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(function != null, null, "function != null");
			Contract.Requires(scheduler != null, null, "scheduler != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, IObservable<TResult>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, IObservable<TResult>>>() != null");
			return null;
		}

		public static Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, IObservable<TResult>> ToAsync<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult>(this IQbservableProvider provider, Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult>> function, IScheduler scheduler)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(function != null, null, "function != null");
			Contract.Requires(scheduler != null, null, "scheduler != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, IObservable<TResult>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, IObservable<TResult>>>() != null");
			return null;
		}

		public static Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, IObservable<TResult>> ToAsync<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult>(this IQbservableProvider provider, Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult>> function, IScheduler scheduler)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(function != null, null, "function != null");
			Contract.Requires(scheduler != null, null, "scheduler != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, IObservable<TResult>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, IObservable<TResult>>>() != null");
			return null;
		}

		public static Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, IObservable<TResult>> ToAsync<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult>(this IQbservableProvider provider, Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult>> function, IScheduler scheduler)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(function != null, null, "function != null");
			Contract.Requires(scheduler != null, null, "scheduler != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, IObservable<TResult>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, IObservable<TResult>>>() != null");
			return null;
		}

		public static Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, IObservable<TResult>> ToAsync<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult>(this IQbservableProvider provider, Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult>> function, IScheduler scheduler)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(function != null, null, "function != null");
			Contract.Requires(scheduler != null, null, "scheduler != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, IObservable<TResult>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, IObservable<TResult>>>() != null");
			return null;
		}

		public static Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, IObservable<TResult>> ToAsync<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult>(this IQbservableProvider provider, Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult>> function, IScheduler scheduler)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(function != null, null, "function != null");
			Contract.Requires(scheduler != null, null, "scheduler != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, IObservable<TResult>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, IObservable<TResult>>>() != null");
			return null;
		}

		public static Func<T1, T2, T3, T4, T5, T6, T7, T8, IObservable<TResult>> ToAsync<T1, T2, T3, T4, T5, T6, T7, T8, TResult>(this IQbservableProvider provider, Expression<Func<T1, T2, T3, T4, T5, T6, T7, T8, TResult>> function, IScheduler scheduler)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(function != null, null, "function != null");
			Contract.Requires(scheduler != null, null, "scheduler != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, IObservable<TResult>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, T8, IObservable<TResult>>>() != null");
			return null;
		}

		public static Func<T1, T2, T3, T4, T5, T6, T7, IObservable<TResult>> ToAsync<T1, T2, T3, T4, T5, T6, T7, TResult>(this IQbservableProvider provider, Expression<Func<T1, T2, T3, T4, T5, T6, T7, TResult>> function, IScheduler scheduler)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(function != null, null, "function != null");
			Contract.Requires(scheduler != null, null, "scheduler != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, IObservable<TResult>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, T5, T6, T7, IObservable<TResult>>>() != null");
			return null;
		}

		public static Func<T1, T2, T3, T4, T5, T6, IObservable<TResult>> ToAsync<T1, T2, T3, T4, T5, T6, TResult>(this IQbservableProvider provider, Expression<Func<T1, T2, T3, T4, T5, T6, TResult>> function, IScheduler scheduler)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(function != null, null, "function != null");
			Contract.Requires(scheduler != null, null, "scheduler != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, T5, T6, IObservable<TResult>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, T5, T6, IObservable<TResult>>>() != null");
			return null;
		}

		public static Func<T1, T2, T3, T4, T5, IObservable<TResult>> ToAsync<T1, T2, T3, T4, T5, TResult>(this IQbservableProvider provider, Expression<Func<T1, T2, T3, T4, T5, TResult>> function, IScheduler scheduler)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(function != null, null, "function != null");
			Contract.Requires(scheduler != null, null, "scheduler != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, T5, IObservable<TResult>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, T5, IObservable<TResult>>>() != null");
			return null;
		}
#endif

		public static Func<T1, T2, T3, T4, IObservable<TResult>> ToAsync<T1, T2, T3, T4, TResult>(this IQbservableProvider provider, Expression<Func<T1, T2, T3, T4, TResult>> function, IScheduler scheduler)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(function != null, null, "function != null");
			Contract.Requires(scheduler != null, null, "scheduler != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, T4, IObservable<TResult>>>() != null, null, "Contract.Result<Func<T1, T2, T3, T4, IObservable<TResult>>>() != null");
			return null;
		}

		public static Func<T1, T2, T3, IObservable<TResult>> ToAsync<T1, T2, T3, TResult>(this IQbservableProvider provider, Expression<Func<T1, T2, T3, TResult>> function, IScheduler scheduler)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(function != null, null, "function != null");
			Contract.Requires(scheduler != null, null, "scheduler != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, T3, IObservable<TResult>>>() != null, null, "Contract.Result<Func<T1, T2, T3, IObservable<TResult>>>() != null");
			return null;
		}

		public static Func<T1, T2, IObservable<TResult>> ToAsync<T1, T2, TResult>(this IQbservableProvider provider, Expression<Func<T1, T2, TResult>> function, IScheduler scheduler)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(function != null, null, "function != null");
			Contract.Requires(scheduler != null, null, "scheduler != null");
			Contract.Ensures(Contract.Result<Func<T1, T2, IObservable<TResult>>>() != null, null, "Contract.Result<Func<T1, T2, IObservable<TResult>>>() != null");
			return null;
		}

		public static Func<T, IObservable<TResult>> ToAsync<T, TResult>(this IQbservableProvider provider, Expression<Func<T, TResult>> function, IScheduler scheduler)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(function != null, null, "function != null");
			Contract.Requires(scheduler != null, null, "scheduler != null");
			Contract.Ensures(Contract.Result<Func<T, IObservable<TResult>>>() != null, null, "Contract.Result<Func<T, IObservable<TResult>>>() != null");
			return null;
		}

		public static Func<IObservable<TResult>> ToAsync<TResult>(this IQbservableProvider provider, Expression<Func<TResult>> function, IScheduler scheduler)
		{
			Contract.Requires(provider != null, null, "provider != null");
			Contract.Requires(function != null, null, "function != null");
			Contract.Requires(scheduler != null, null, "scheduler != null");
			Contract.Ensures(Contract.Result<Func<IObservable<TResult>>>() != null, null, "Contract.Result<Func<IObservable<TResult>>>() != null");
			return null;
		}
	}
}